package com.ztom.v2;

/**
 * @author ZhangTao
 */
public class Code83HouseRobber {

    public int rob(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        if (nums.length == 1) {
            return nums[0];
        }
//        return process(nums, nums.length - 1);
        int prepre = nums[0];
        int pre = Math.max(nums[0], nums[1]);
        for (int i = 2; i < nums.length; i++) {
            // 偷当前: prepre + nums[i]
            // 不偷当前: pre
            int cur = Math.max(pre, prepre + nums[i]);
            prepre = pre;
            pre = cur;
        }
        return pre;
    }

    public int process(int[] nums, int index) {
        // 偷第一家
        if (index == 0) {
            return nums[0];
        }
        // 偷第二家
        if (index == 1) {
            return Math.max(nums[0], nums[1]);
        }

        return Math.max(
                // 以 i 位置结尾, 不偷 i 位置
                process(nums, index - 1),
                // 偷 i 位置
                process(nums, index - 2) + nums[index]
        );
    }
}
